﻿using System;
using System.Collections.Generic;
using System.Text;

namespace daSemanticAnalyser.SemanticTree
{
    using daSyntaxAnalyser.SyntaxTree;

    /// <summary>
    /// Тип-функция
    /// </summary>
    public class FunctionTypeSemanticElement : MethodTypeSemanticElement
    {
        private CommonTypeSemanticElement returntype;

        /// <summary>
        /// Тип возвращаемого значения
        /// </summary>
        public CommonTypeSemanticElement ReturnType { get { return returntype; } set { returntype = value; } }

        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="Name">имя функции</param>
        /// <param name="Parent">родитель элемента семантического дерева</param>
        /// <param name="Unit">модуль, содержащий функцию</param>
        /// <param name="Params">список параметров функции</param>
        /// <param name="OfObject">флаг наличия директивы of object</param>
        /// <param name="Directives">директивы функции</param>
        /// <param name="ReturnType">тип возвращаемого значения</param>
        /// <param name="SyntaxElement">соответствующий элемент синтаксического дерева</param>
        public FunctionTypeSemanticElement(string Name, IChildSemanticElement Parent, FileSemanticElement Unit, bool Packed, List<ParamSemanticElement> Params, bool OfObject, List<MethodDirectiveSemanticElement> Directives, CommonTypeSemanticElement ReturnType, ISyntaxTreeElement SyntaxElement)
            : base(Name, Parent, Unit, Packed, MethodTypes.Function, Params, OfObject, Directives, SyntaxElement)
        {
            returntype = ReturnType;
        }
    }
}
